home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Disc to the Future 2
/
Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin
/
MAC
/
THINKC
/
4_0
/
VMSTUFF_
/
VMLIBRAR.H
next >
Wrap
Text File
|
1990-04-27
|
2KB
|
85 lines
/*
VMLibrary - Virtual Memory Library Copyright (C) 1990 by JK Software
Version 1.0
NOTE: IF YOU WILL BE USING THIS LIBRARY WITH A COMPILER OTHER THAN THINK C
PLEASE MAKE SURE THAT INTEGER DATA TYPES ARE DEFINED AS 16 BIT. THINK C
INT'S ARE 16 BIT BUT MPW USES 32 BIT INTS. CHANGE THE DATA TYPES IN THIS
HEADER FILE SO THAT THE INT'S ARE A 16 BIT INTEGER.
*/
#ifndef _VMLibrary_
#define _VMLibrary_
#endif
#define VMSWAPFILE "\pVM Swap File"
#define HIGHEST_USAGE 16000000
#define DEFAULT_SYSTEM_MINIMUM 65536
#define INMEMORY 0x0001
#define ONDISK 0x0002
#define ISLOCKED 0x0004
#define ISDIRTY 0x0008
typedef struct page
{
Handle memoryH;
long lrucount;
long blocksize;
int statusflags;
long diskoffset;
struct page **vmnextpageH;
} vmpage, **vmpageH;
typedef struct
{
struct page **vmfirstpageH;
int vmVolumeRefNum;
Str255 vmSwapFile;
int vmFileRefNum;
long vmpagecount;
long vmPhysicalMemAvail;
long vmVirtualMemAllocated;
long vmMinSysMemory;
long vmPageAccesses;
long vmSwapOutCount;
long vmSwapInCount;
} vmcontrol, **vmcontrolH;
typedef struct
{
long vmpagecount;
long vmPhysicalMemAvail;
long vmVirtualMemAllocated;
long vmMinSysMemory;
long vmPageAccesses;
long vmSwapOutCount;
long vmSwapInCount;
} vmstatus, *vmstatusPtr;
extern pascal vmcontrolH VMInit(Str255 UserFileName, int UserVolRefNum);
extern pascal Boolean VMTerminate(vmcontrolH vmcH);
extern pascal Boolean VMSetSysMinMemory(vmcontrolH vmcH, Size MinMem);
extern pascal Size VMGetSysMinMemory(vmcontrolH vmcH);
extern pascal vmpageH VMNewHandle(vmcontrolH vmcH, long blocksize);
extern pascal Ptr VMHLock(vmcontrolH vmcH, vmpageH pageH);
extern pascal Boolean VMHUnlock(vmcontrolH vmcH, vmpageH pageH);
extern pascal Boolean VMDisposeH(vmcontrolH vmcH, vmpageH pageH);
extern pascal Boolean VMMakePageDirty(vmcontrolH vmcH, vmpageH pageH);
extern pascal Boolean VMGetStatus(vmcontrolH vmcH, vmstatusPtr statusPtr);
extern pascal Handle AllocateMemory(vmcontrolH vmcH, long blocksize);
extern pascal vmpageH FindLRU(vmcontrolH vmcH, long blocksize);
extern pascal Boolean AddToList(vmcontrolH vmcH, vmpageH pageH);
extern pascal Boolean SwapPageOut(vmcontrolH vmcH, vmpageH pageH);
extern pascal Boolean SwapPageIn(vmcontrolH vmcH, vmpageH pageH, Handle newH);
extern pascal vmpageH FindPreviousHandlePage(vmpageH pageH, vmpageH thepageH);